# ecoding=utf-8
"""
循环多边形数

  三角形数、正方形数、五边形数、六边形数、七边形数和八边形数统称为多边形数。它们分别由如下的公式给出：
三角形数 P3(n)=n(n+1)/2  1, 3, 6, 10, 15, …
正方形数 P4(n)=n2  1, 4, 9, 16, 25, …
五边形数 P5(n)=n(3n−1)/2  1, 5, 12, 22, 35, …
六边形数 P6(n)=n(2n−1)   1, 6, 15, 28, 45, …
七边形数 P7(n)=n(5n−3)/2  1, 7, 18, 34, 55, …
八边形数 P8(n)=n(3n−2)   1, 8, 21, 40, 65, …
由三个4位数8128、2882、8281构成的有序集有如下三个有趣的性质：
  1：这个集合是循环的，每个数的后两位是后一个数的前两位(最后一个数的后两位也是第一个数的前两位)；
  2：每种多边形数——三角形数（P3(127)=8128）、正方形数（P4(91)=8281）和五边形数（P5(44)=2882）——在其中各有一个代表;
  3：这是唯一一个满足上述性质的4位数有序集；
  存在唯一一个包含六个4位数的有序循环集，每种多边形数——三角形数、正方形数、五边形数、六边形数、七边形数和八边形数——在其中各有一个代表。求这个集合的元素和。

"""
def edge_num(n):
    if ((8*n+1)**0.5-1)%2==0:
        return 3
    elif (int(n**0.5))**2==n:
        return 4
    elif ((24*n+1)**0.5+1)%6==0:
        return 5
    elif ((8*n+1)**0.5+1)%4==0:
        return 6
    elif ((40*n+9)**0.5+3)%10==0:
        return 7
    elif ((3*n+1)**0.5+1)%3==0:
        return 8
    else:
        return False
s=set()
for i in range(1000,10000):
    if edge_num(i)!=False and str(i)[2]!='0':
        s.add(str(i))
ss=list(s)
result=[]
for j in ss:
    t1=j[2:]
    for k in ss:
        if j!=k and k.startswith(t1):
            t2=k[2:]
            for l in ss:
                if k!=l and l.startswith(t2):
                    t3=l[2:]
                    for m in ss:
                        if l!=m and m.startswith(t3):
                            t4=m[2:]
                            for n in ss:
                                if m!=n and n.startswith(t4):
                                    t5=n[2:]
                                    for o in ss:
                                        if n!=o and o.startswith(t5) and j.startswith(o[2:]):
                                            result.append([j,k,l,m,n,o])
for l1 in result:
    a=set()
    sum_num=0
    for c in l1:
        if ((8*(int(c))+1)**0.5-1)%2==0 and ((8*(int(c))+1)**0.5+1)%4==0:
            a.add(6)
            sum_num+=int(c)
        else:
            a.add(edge_num(int(c)))
            sum_num+=int(c)
    if len(a)==6:
        print(l1)
        print(sum_num)
        break